
package com.hulk.dryad.manage.provider.service.impl;

import cn.hutool.core.io.file.FileNameUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hulk.dryad.common.constant.CommonConstants;
import com.hulk.dryad.common.util.SecurityUtils;
import com.hulk.dryad.persistence.entity.SysFileModel;
import com.hulk.dryad.persistence.mapper.SysFileMapper;
import com.hulk.dryad.manage.provider.service.SysFileService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.time.LocalDateTime;

/**
 * 文件管理
 *
 * @author kim
 * @date 2019-06-18 17:18:42
 */
@Slf4j
@Service
@DS("#" + CommonConstants.TENANT_ID)
@AllArgsConstructor
public class SysFileServiceImpl extends ServiceImpl<SysFileMapper, SysFileModel> implements SysFileService {



	/**
	 * 上传文件
	 * @param file
	 * @return
	 */
	@Override
	public Boolean uploadFile(MultipartFile file , String domain, String fileName  , String directory , String bucketName) {
		return fileLog(file, domain,fileName,directory,bucketName);
	}





	/**
	 * 文件管理数据记录,收集管理追踪文件
	 * @param file 上传文件格式
	 * @param fileName 文件名
	 */
	private Boolean fileLog(MultipartFile file, String domain,String fileName, String directory ,String bucketName) {
		SysFileModel sysFile = new SysFileModel();
		// 原文件名
		String original = file.getOriginalFilename();
		fileName  = StringUtils.removeStart(fileName, StrUtil.SLASH);
		fileName  = StringUtils.removeEnd(fileName,StrUtil.SLASH);
		directory  = StringUtils.removeStart(directory, StrUtil.SLASH);
		directory  = StringUtils.removeEnd(directory,StrUtil.SLASH);
		//bucketName  = StringUtils.removeStart(bucketName, StrUtil.SLASH);
		bucketName  = StringUtils.removeEnd(bucketName,StrUtil.SLASH);
		sysFile.setFileName(fileName);
		sysFile.setFileDir(directory);
		sysFile.setBucketName(bucketName);
		sysFile.setOriginal(original);
		sysFile.setFileSize(file.getSize());
		sysFile.setType(FileNameUtil.extName(original));
		sysFile.setCustomDomain(domain);
		sysFile.setCreatedBy(SecurityUtils.getUser().getUsername());
		sysFile.setCreatedTime(LocalDateTime.now());
		return  this.save(sysFile);
	}

}
